/*
 * Copyright (c) 2010 Zauber S.A.  -- All rights reserved
 */
package ar.edu.itba.ia2010.geneticos.motor.api.sintaxistree.impl;

import org.apache.commons.lang.Validate;

import ar.edu.itba.ia2010.geneticos.motor.api.MotorGeneticoContext;
import ar.edu.itba.ia2010.geneticos.motor.api.sintaxistree.ExpresionGenerator;

/**
 * Contexto de ejecucion para cuando se trabaja con arboles sintacticos 
 *  
 * @author Juan F. Codagnone
 * @since Mar 28, 2010
 */
public class ExpresionMotorGeneticoContext implements MotorGeneticoContext {
    private final int maxDepth;
    private final ExpresionGenerator generator;

    /** Creates the ExpresionMotorGeneticoContext. */
    public ExpresionMotorGeneticoContext(final int maxDepth,
            final ExpresionGenerator generator) {
        Validate.isTrue(maxDepth > 0);
        Validate.notNull(generator);
        
        this.maxDepth = maxDepth;
        this.generator = generator;
    }
    
    /** @return la altura maxima a usar al generar un arbol */
    public final int getMaxDepth() {
        return maxDepth;
    }
    
    /** @return el generador sintactico usado en la mutacion */
    public final ExpresionGenerator getGenerator() {
        return generator;
    }
}
